package com.dayaokeji.server_api.api;

import com.dayaokeji.server_api.Page;
import com.dayaokeji.server_api.ServerResponse;
import com.dayaokeji.server_api.domain.UpdateVoteStatus;
import com.dayaokeji.server_api.domain.UserVote;
import com.dayaokeji.server_api.domain.Vote;
import com.dayaokeji.server_api.domain.VoteItem;

import java.util.Map;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by Zeno on 2017/10/8.
 * 投票相关
 */

public interface VoteApi {

    /**
     * 投票列表
     * @param userId
     * @param relId
     * @param relType
     * @param start
     * @param length
     * @return
     */
    @GET("course/vote/list")
    Call<ServerResponse<Page<Vote>>> list(
            @Query("createUser") int userId,
            @Query("relId") int relId,
            @Query(("relType")) int relType,
            @Query("start") int start,
            @Query("length") int length
    );

    /**
     * 修改投票主题
     * @param updateVoteStatus
     * @return
     */
    @POST("course/vote/update")
    Call<ServerResponse<Void>> update(@Body UpdateVoteStatus updateVoteStatus);

    /**
     * 删除投票
     * @param params
     * @return
     */
    @POST("course/vote/delete")
    Call<ServerResponse<Void>> delete(@Body Map<String,Integer> params);

    /**
     * 用户投票
     * @param userVote
     * @return
     */
    @POST("course/vote/vote")
    Call<ServerResponse<Void>> vote(@Body UserVote userVote);

    @GET("course/vote/listOption")
    Call<ServerResponse<Page<VoteItem>>> listOption(
            @Query("themeId") int themeId,
            @Query("title") String title,
            @Query("start") int start,
            @Query("length") int length
    );
}
